﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using Entidades.Sistema.Venta;
using Mapping.Sistema.Venta;

namespace Modelo.Sistema.Venta
{
    public class CatalogoProductos
    {
        private List<Producto> Col_Productos;

        public CatalogoProductos()
        {
            Col_Productos = MappingProductos.ConsultarProductos();
        }

        public List<Producto> ListarProductos()
        {
            return Col_Productos;
        }

        public bool AgregarProducto(Producto oProducto)
        {
            oProducto.IdProducto = MappingProductos.Contar();
            Col_Productos.Add(oProducto);
            return MappingProductos.AgregarProducto(oProducto);
        }

        public Producto BuscarProducto(int idProducto)
        {
            return this.Col_Productos.Find(p => p.IdProducto == idProducto);
        }

        public void ModificarProducto(Producto oProducto)
        {
            MappingProductos.ModificarProducto(oProducto);
            Col_Productos.RemoveAll(x => x.IdProducto == oProducto.IdProducto);
            Col_Productos.Add(oProducto);
        }
        public void EliminarProducto(Producto oProducto)
        {            
            Col_Productos.RemoveAll(x => x.IdProducto == oProducto.IdProducto);
            MappingProductos.EliminarProducto(oProducto);
        }

        public static int NuevoProductID()
        {
            IEnumerable<Producto> editableProducts = MappingProductos.ConsultarProductos();
            return (editableProducts.Count() > 0) ? editableProducts.Last().IdProducto + 1 : 0;
        }
    }
}
